using System;
using System.Collections.Generic;
using System.Text;
using csharp.rad.general;

namespace csharp.rad.sisponto
{
   public class Curso
   {
      private Database bd;
      public Database.Result result = new Database.Result();
      private String c_msgErro;
      private Int32 c_id_curso;
      private String c_nome;
      private Int32 c_coordenador;
      private int c_duracao;

      public Curso(Database bancoDeDados)
      {
         bd = bancoDeDados;
      }
      public string _msg_erro
      {
         set { c_msgErro = value; }
         get { return c_msgErro; }
      }
      public Int32 id_curso
      {
         get { return c_id_curso; }
         set { c_id_curso = value; }
      }
      public String nome
      {
         get { return c_nome; }
         set { c_nome = value; }
      }
      public Int32 coordenador
      {
         get { return c_coordenador; }
         set { c_coordenador = value; }
      }
      public int duracao
      {
         get { return c_duracao; }
         set { c_duracao = value; }
      }

      public int inserir()
      {
         String _sql;

         _sql = "INSERT INTO curso "
               + "(nome, coordenador, duracao) "
               + " VALUES('" + c_nome + "'," + c_coordenador + "," + c_duracao + ")";

         result = bd.ExecuteCommand(_sql, Database.doNotUseTransaction);

         if (result.Status == Database.Status.Failed)
         {
            _msg_erro = result.ErrorMessage;
            return -1;
         }
         //Recupera o id do curso
         _sql = "SELECT id_curso FROM curso WHERE (nome = '" + c_nome + "')";
         object idCurso = bd.ExecuteScalar(_sql, out result);
         if (result.Status == Database.Status.Failed)
         {
            c_msgErro = result.ErrorMessage;
            return -1;
         }
         return Convert.ToInt32(idCurso);
      }

      public int procura(string nome)
      {
         string _sql = "SELECT id_curso FROM curso WHERE nome = '" + nome + "'";

         object ret = bd.ExecuteScalar(_sql, out result);

         if (ret != null)
            return (Convert.ToInt32(ret.ToString()));
         else if (result.Status != Database.Status.Failed)
            return 0;
         else
            return -1;
      }

      public int gravar()
      {
         String _sql;

         _sql = "UPDATE curso SET nome='" + c_nome + "', coordenador=" + c_coordenador + ", "
               + " duracao = " + c_duracao
               + " WHERE (id_curso = " + c_id_curso + ");";

         result = bd.ExecuteCommand(_sql, Database.doNotUseTransaction);
         if (result.Status == Database.Status.Failed)
         {
            c_msgErro = result.ErrorMessage;
            return -1;
         }
         return 1;
      }

      public int obter()
      {
         String _sql;
         String tabela = "curso";

         System.Data.DataSet dtsCurso = new System.Data.DataSet();
         _sql = "SELECT * FROM curso WHERE id_curso = " + c_id_curso;
         dtsCurso = bd.ExecuteQuery(_sql, tabela, out result);
         if (result.Status == Database.Status.Failed)
         {
            c_msgErro = result.ErrorMessage;
            return -1;
         }
         if (dtsCurso.Tables[tabela].Rows.Count == 0)
            return 0;

         System.Data.DataRow registro = dtsCurso.Tables[tabela].Rows[0];
         c_nome = registro["nome"].ToString();
         c_coordenador = Convert.ToInt32(registro["coordenador"]);
         c_duracao = Convert.ToInt32(registro["duracao"]);
         return 1;
      }
   }
}
